Increasing advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to enhanced computer application in various industries. Ever more powerful server systems, which are often configured as an array of servers, are commonly provided to service requests originating from external sources such as the World Wide Web, for example.
The process of eliminating errors from various computer software/applications is commonly known as debugging. For example, during the coding of computer programs, the inadvertent production of errors or bugs, is typically unavoidable—when a line of code or an instruction conflicts with other elements of the code, for example. To mitigate the adverse effects of such occurrences, debugging systems are developed to help identify and eliminate bugs from a computer program. In addition, a variety of debugging tools and methods exist that perform diagnostics for analyzing various types of problems with server applications. Such debugging can be quite costly and time consuming, depending on the complexities involved such as: type of server, existence of firewalls, and the like.
Also, debugging has typically been performed by employing a plurality of different approaches such as: computer software debugging, hardware description language functional verification, hardware logic level analysis, or hardware behavioral source level emulation, and the like. For example, computer software debugging can be implemented by employing a computer software debugger.
In general, a computer software debugger is a software tool that allows a software developer to control the execution of a running computer software program by: setting breakpoints; sequentially single-stepping through the execution of the computer software program; looking at the program's state by examining and displaying variables and expressions, and the like. Moreover, such software tools (e.g., debuggers), can be developed for reducing debugging cycle time. Debuggers typically execute as self-contained processes for controlling an application program under study through operating system primitives designed for that purpose. Also, software debuggers can usually offer interactive debugging of software programs that are sequentially executed on computers. Nonetheless, such debugging tools are not readily scalable to different server and computer configurations and architectures.
At the same time, presence of corporate firewall(s) can further add to the complexities of debugging machines positioned behind such firewall(s). Typically, a firewall can be considered a first line of defense in protecting private information, and can be implemented in both hardware and software, or a combination of both. Such firewalls can typically hinder easy access of a Developer to a Tester for debugging purposes. For a proper debugging session to properly run in such environment, typically cumbersome planning and meticulous execution can be required. Moreover, significant challenges exist if several debugging sessions on different machines are desired.
Therefore, there is a need to overcome the aforementioned exemplary deficiencies associated with conventional systems and devices.